Jump to content
  • 0

Каптча


macbeth9
 Share

Question

Здравствуйте! Нужна помощь в установке каптчи, я установил контактную форму с сайта Евгения Попова http://ruseller.com/lessons.php?rub=37&id=289 и теперь нужно заменить его проверку на спам на каптчу а вот как впихнуть ее не знаю,еще посоветуйте каптчу хорошую

вот код

<?php
$error= ''; // сообщение об ошибке
$name= ''; // имя отправителя
$email= ''; // email отправителя
$subject = ''; // тема
$message = ''; // сообщение
$spamcheck = ''; // проверка на спам

if(isset($_POST['send']))
{
{$name = $_POST['name'];}
{$email = $_POST['email'];}
{$subject = $_POST['subject'];}
{$message = $_POST['message'];}
{$spamcheck = $_POST['spamcheck'];}

if(trim($name) == '')
{
$error = '<div class="errormsg">Пожалуйста, введите Ваше имя</div>';
}
else if(trim($email) == '')
{
$error = '<div class="errormsg">Пожалуйста, введите Ваш E-mail!</div>';
}
else if(!isEmail($email))
{
$error = '<div class="errormsg">Вы ввели неправильный E-mail</div>';
}
else if(trim($subject) == '')
{
$error = '<div class="errormsg">Пожалуйста, введите тему!</div>';
}
else if(trim($message) == '')
{
$error = '<div class="errormsg">Пожалуйста, введите сообщение!</div>';
}
else if(trim($spamcheck) == '')
{
$error = '<div class="errormsg">Пожалуйста, введите проверку на спам!</div>';
}
else if(trim($spamcheck) != '29')
{
$error = '<div class="errormsg">Проверка на спам: Вы ввели неправильный результат! 2 + 3 = ???</div>';
}
if($error == '')
{
if(get_magic_quotes_gpc())
{
$message = stripslashes($message);
}
$to = "macbeth9@yandex.ru";
$subject = '' . $subject;
$msg = "От кого: $name \nАдрес: $email \nТема: $subject \n\nСообщение: $message"; mail($to, $subject, $msg, "Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
?>
<div style="text-align:center;">
<p>Cообщение успешно отправлено!</p>
</div>
<?php
}
}
if(!isset($_POST['send']) || $error != '')
{
?>
<center<?=$error;?></center>
<form method="post" name="contFrm" id="contFrm" action="">
<label>Имя:<span class="required">*</span></label>
<input name="name" type="text" class="box" id="name" size="30" value="<?=$name;?>" /><br>
<label>Ваш Email:<span class="required">*</span> </label>
<input name="email" type="text" class="box" id="email" size="30" value="<?=$email;?>" /><br>
<label>Тема:<span class="required">*</span> </label>
<input name="subject" type="text" class="box" id="subject" size="30" value="<?=$subject;?>" /><br>
<label>Сообщение:<span class="required">*</span> </label>
<textarea name="message" cols="70" rows="10" id="message"><?=$message;?>
</textarea><br>
<label>Проверка на спам:<span class="required">*</span><br />
<b>15 + 14 =</b></label><br>
<input name="spamcheck" type="text" class="box" id="spamcheck" size="4" value="<?=$spamcheck;?>" />
<br>
<br>
<input name="send" type="submit" class="button" id="send" value="Отправить" />
</form>
<?php
}
function isEmail($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|
bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|co
m|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|f
k|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|
ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|
kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms
|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|o
rg|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg
|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt
|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$email));
}
?>

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

1. Логику надо отделять от представления

2. Не надо брать форму из уроков Попова и вообще не надо его читать, смотреть и слушать. Напишите форму сами.

3. Регулярное выражение, проверяющее валидность почты просто ужасно. Если уж решили впихивать все доменные зоны, то где .travel, например?

4. http://www.captcha.ru/ - весьма неплохая каптча.

Link to comment
Share on other sites

  • 0

PHP код черезжопный!

Например вот это все

{$name = $_POST['name'];}
{$email = $_POST['email'];}
{$subject = $_POST['subject'];}
{$message = $_POST['message'];}
{$spamcheck = $_POST['spamcheck'];}

можно сделать

extract($_POST);

Кстати, а зачем столько кавычек?

И не легче ли сделать trim

$name				   = trim( $_POST['name'] );
$email = trim( $_POST['email'] );
$subject = trim( $_POST['subject'] );
$message = trim( $_POST['message'] );
$spamcheck = trim( $_POST['spamcheck'] );

чем потом

else if(trim($message) == '')

Код будет чище и понятней.

Edited by EGORR
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy